<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * //Descripción del controlador
 *  
 */
class ABM_Cursos extends CI_Controller {
    function __construct() {
        parent::__construct();
        
        //Si el usuario no está logueado redirijo al modulo de login.
        if(!$this->autenticacion->logueado()){
            redirect('admin/usuarios');
        }
        
        //ZONA DE CARGA DE LIBRERIAS, HELPERS Y MODELOS
        $this->load->library('grocery_CRUD');
        
        $this->load->helper('form');
        $this->load->helper('html');
        
        $this->load->model('Cursos_Model');
        $this->load->model('Tematicas_Model');
        
        //ZONA DE INICIALIZACIÓN DE VARIABLES
        $this->encabezado['usuario']=  $this->session->userdata('usuario');
        $this->menu['menu']='cursos';
        $this->menu['submenu']='cursos';
        
    }

    function index($mensaje = NULL){
        $this->abm();
    }
    
    function abm(){
        //Creo el objeto crud
        $crud = new grocery_CRUD();

        //Defino Template como datatables.
        //$crud->set_theme('datatables');

        //Defino tabla sobre la que trabajo y tipo de 'Objeto'
        $crud->set_table('Cursos');
        $crud->set_subject('Curso');
        
        //Quito el botones borrar.
        $crud->unset_delete();
        
        //Agrego la acción para ver los detalles del curso.
        $crud->add_action('Ver detalles', base_url().'assets/grocery_crud/themes/flexigrid/css/images/magnifier.png', 'admin/abm_cursos/detalles_curso','');
        
        //Defino Relaciones 1-n
        $crud->set_relation('idTematica', 'Tematicas', 'descripcion');

        //Defino Relaciones n-n
        $crud->set_relation_n_n('docentesAsignados', 'DocentesPorCurso', 'Docentes', 'idCurso', 'idDocente', '{nombre} {apellido}');
        $crud->set_relation_n_n('niveles', 'NivelesCurso', 'Niveles', 'idCurso', 'idNivel', 'descripcion');
        
        //Seteo Reglas para campos
        $crud->set_rules('titulo', 'T&iacute;tulo', 'required');
        
        //Seteo campos requeridos
        $crud->required_fields('titulo', 'idTematica', 'tipoSalon', 'edadDestino', 'estado');
        
        //Defino Columnas a Mostrar
        $crud->columns('titulo', 'idTematica', 'tipoSalon', 'edadDestino', 'estado');
        
        //Defino nombres para cada campo.
        $crud->display_as('titulo', 'T&iacute;tulo');
        $crud->display_as('idTematica', 'Tem&aacute;tica');
        $crud->display_as('tipoSalon', 'Tipo de Sal&oacute;n');
        $crud->display_as('edadDestino', 'Edad Destino');
        $crud->display_as('estado', 'Estado');
        $crud->display_as('docentesAsignados', 'Docentes Asignados');
        
        //Hago 'callbacks' para transformar datos antes de inserción/actualización.
        //$crud->callback_before_insert(array($this, '_transformar_htmlentities'));
        //$crud->callback_before_update(array($this, '_transformar_htmlentities'));
        $crud->callback_after_insert(array($this, '_callback_insercion'));
        $crud->callback_after_update(array($this, '_callback_edicion'));
        //Genero el ABM
        $output=$crud->render();

        //Llamo a la función encargada de mostrar el ABM.
        $this->mostrar_crud($output);
    }
    
    private function mostrar_crud($output = null, $vista='abm_view', $data = NULL) {   
        
        $this->encabezado['abm']=TRUE;
        $this->encabezado['js_files']=$output->js_files;
        $this->encabezado['css_files']=$output->css_files;
        
        $this->load->view('admin/template/encabezado', $this->encabezado);
        $this->load->view('admin/template/menu', $this->menu);
        $this->load->view("admin/abm_cursos/$vista", $data);
	$this->load->view('admin/crud/crud_view',$output);	
        $this->load->view('admin/template/footer');
	}

    function _transformar_htmlentities(){
        $post_array=$this->input->post();
        
        //Convierto a 'acute' los campos necesarios.
        $post_array['titulo']=htmlentities($post_array['titulo']);
        $post_array['tipoSalon']=htmlentities($post_array['tipoSalon']);
        $post_array['edadDestino']=htmlentities($post_array['edadDestino']);
        
        return $post_array;
    }
    
        function _callback_insercion($post_array, $primary_key){
        //Inserto el registro
        $registro="Insertó el curso id: $primary_key";
        $this->registro_actividad->cargar_registro($this->session->userdata('id'), $registro);
    }
    
    function _callback_edicion($post_array, $primary_key){
        //Inserto el registro
        $registro="Editó el curso id: $primary_key";
        $this->registro_actividad->cargar_registro($this->session->userdata('id'), $registro);
    }
    
    function detalles_curso($idCurso, $mensaje=NULL){
                
        $data['mensaje']=$mensaje;
        $data['curso'] = $this->Cursos_Model->getCurso($idCurso);
        
        //Recupero la Temática que corresponde.
        $tematica=$this->Tematicas_Model->get_tematica($data['curso']['idTematica']);
        $data['curso']['tematica']=$tematica['descripcion'];
         
        //Según el estado cambio el valor por la cadena que corresponde.
        switch ($data['curso']['estado']) {
            case 0:
                $data['curso']['estado']="Inactivo";
                break;
            case 1:
                $data['curso']['estado']="Activo";
                break;
        }
        //Cargo datos de niveles disponibles.
        //Para eso primero cargo el modelo.
        
        //Y recupero los niveles para este curso.
        $data['niveles']=$this->Cursos_Model->get_niveles_curso($idCurso);
        
        $this->load->view('admin/template/encabezado', $this->encabezado);
        $this->load->view('admin/template/menu', $this->menu);
        $this->load->view('admin/abm_cursos/detalles_curso_view', $data);
	$this->load->view('admin/template/footer');
    }
    
    function ver_temario($idCurso, $idNivel){
        
        $data['curso'] = $this->Cursos_Model->getCurso($idCurso);
        $data['nivel'] = $this->Cursos_Model->get_nivel($idNivel);
        $data['temario'] =  $this->Cursos_Model->get_temario_nivel_curso($idCurso, $idNivel);
        
        $this->load->view('admin/template/encabezado', $this->encabezado);
        $this->load->view('admin/template/menu', $this->menu);
        $this->load->view('admin/abm_cursos/temario_view', $data);
        $this->load->view('admin/template/footer');
    }
    
    function editar_temario($idCurso, $idNivel){
        
        //Recupero datos.
        $data['curso'] = $this->Cursos_Model->getCurso($idCurso);
        $data['nivel'] = $this->Cursos_Model->get_nivel($idNivel);
        $data['temario'] = $this->Cursos_Model->get_temario_nivel_curso($idCurso, $idNivel);

        $this->load->view('admin/template/encabezado', $this->encabezado);
        $this->load->view('admin/template/menu', $this->menu);
        $this->load->view('admin/abm_cursos/editar_temario_view', $data);
        $this->load->view('admin/template/footer');
    }
    
    function guardar_temario($idCurso, $idNivel){
        $temario=  $this->input->post('temario');
        
        //Convierto a acute
        //$temario = htmlentities($temario);
        
        $this->Cursos_Model->actualizar_temario($idCurso, $idNivel, $temario);
        
        $mensaje['exito']="Temario Guardado";
        
        $registro = "Modificó temario Curso id: $idCurso y nivel id: $idNivel";
        $this->registro_actividad->cargar_registro($this->session->userdata('id'), $registro);
        
        $this->detalles_curso($idCurso, $mensaje);
    }
    
}

/* End of file abm_cursos.php */
/* Location: ./application/controllers/abm_cursos.php */